proposals
The operational memory + assembly line for competing in editais / RFPs / public tenders / incentive programs / awards. Multi-company (Revera / Itera / devfellowship + partners like B42): a company registry with a fiscal/legal profile, a governed answer library that composes across submissions by reference (never copy-paste), opportunities with an extracted requirements checklist, and submissions that assemble answers + vault documents for one applying company. Reads strategy/public, writes only its own proposals schema.
| Endpoint | https://proposals.mcp.devfellowship.com/mcp |
| Tools | 21 |
| Backing data | proposals schema (companies + vault, answers, opportunities, submissions). |
Companies + Document Vault
Section titled “Companies + Document Vault”| Tool | Description |
|---|---|
list_companies | List the companies that can apply to an opportunity — own entities (Revera/Itera/devfellowship) and external partners (e.g. B42). Filter by relationship or search name/cnpj. |
get_company | Get one company by id, optionally with its fiscal-year history (revenue/headcount) and contacts. |
upsert_company | Create a new company, or update an existing one when id is given. relationship (own|partner) is required when creating. |
upload_company_doc | Upload a SMALL document into the vault by sending its bytes inline (base64): POSTs to the upload-file edge function as PRIVATE and records a company_documents metadata row. Body is capped (~10 MB body ≈ ~7.5 MB file) — for larger files use link_company_doc. Admin-gated. |
link_company_doc | The definitive large-file path: record a vault row for a file ALREADY uploaded to the private bucket (upload-file edge function, visibility=private) — pass its media_id / media.devfellowship.com URL / share.devfellowship.com URL / storage path, no bytes in the body. Optional supersedes replaces a prior row (status=superseded + superseded_by). Admin-gated. |
list_expiring_documents | The certificate-renewal radar: vault documents whose valid_until falls within a look-ahead window (already-expired included). Admin-gated. |
Answer Library
Section titled “Answer Library”| Tool | Description |
|---|---|
search_answers | Search the reusable answer library by free text and/or facet tags. The reuse entry point — find an approved answer, then reference it from a submission section. Each row reports answer_kind + sheet_id. |
create_answer | Add a reusable answer to the library. company_id NULL = ecosystem-shared; set = company-specific. Optionally attach tags and pair a PT/EN translation. Pass sheet_id when the answer IS a spreadsheet. |
update_answer | Edit an answer; optionally record an append-only revision snapshot (which carries sheet_id + answer_kind too) and/or fully replace its facet tags. Attach or detach a sheet with sheet_id. |
set_answer_status | Transition an answer through its governance lifecycle: draft → approved → stale → retired. Approving stamps last_reviewed_at. |
list_stale_answers | The library review queue: answers marked stale plus answers expiring within a look-ahead window. Each row reports answer_kind + sheet_id. |
Opportunities
Section titled “Opportunities”| Tool | Description |
|---|---|
create_opportunity | Register an edital/RFP/public tender/incentive program/award as a structured object (deadlines, value, status), optionally attaching a funder. |
add_requirements | Bulk-add the extracted checklist for an opportunity (document/eligibility/content/form/budget), each with provenance back to the notice PDF. |
eligibility_check | Cross a company against an opportunity’s requirements and return a per-requirement verdict + gap list (auto-checks documents against the vault and eligibility criteria against fiscal years). |
list_opportunities | List opportunities in the pipeline, filterable by status/funder_id/kind — the discovery entry point before create_opportunity (avoid blind duplicates). Each row includes its resolved funder. |
search_opportunities | Text search over title, notice_number (número do edital), or funder name — the dedup entry point before create_opportunity. Combine with status/kind/funder_id filters. |
Submissions (Assembly)
Section titled “Submissions (Assembly)”| Tool | Description |
|---|---|
create_submission | Open a submission = one company applying to one opportunity (the multi-company anchor). Seeds the company as lead; pass consortium to add partners. |
upsert_section | Create or update a section of a submission. answer_id is the reuse/provenance link; content_md is the opportunity-tailored final text adapted from that answer. Pass sheet_id when the section IS a spreadsheet. |
attach_document | The compliance join: record that a specific vault document satisfies a submission — optionally tied to the exact requirement it fulfills. |
submission_checklist | Assemble the full compliance + drafting state of a submission: every requirement with its attached documents, plus each section with its status, section_kind and sheet_id. |
harvest_answers | The loop that compounds: promote reusable text written in a past submission back into the answer library, back-linking sections to the new answers. A sheet section promotes with its sheet_id intact. |