Skip to content

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.

Endpointhttps://proposals.mcp.devfellowship.com/mcp
Tools21
Backing dataproposals schema (companies + vault, answers, opportunities, submissions).
ToolDescription
list_companiesList 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_companyGet one company by id, optionally with its fiscal-year history (revenue/headcount) and contacts.
upsert_companyCreate a new company, or update an existing one when id is given. relationship (own|partner) is required when creating.
upload_company_docUpload 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_docThe 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_documentsThe certificate-renewal radar: vault documents whose valid_until falls within a look-ahead window (already-expired included). Admin-gated.
ToolDescription
search_answersSearch 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_answerAdd 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_answerEdit 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_statusTransition an answer through its governance lifecycle: draft → approved → stale → retired. Approving stamps last_reviewed_at.
list_stale_answersThe library review queue: answers marked stale plus answers expiring within a look-ahead window. Each row reports answer_kind + sheet_id.
ToolDescription
create_opportunityRegister an edital/RFP/public tender/incentive program/award as a structured object (deadlines, value, status), optionally attaching a funder.
add_requirementsBulk-add the extracted checklist for an opportunity (document/eligibility/content/form/budget), each with provenance back to the notice PDF.
eligibility_checkCross 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_opportunitiesList 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_opportunitiesText 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.
ToolDescription
create_submissionOpen a submission = one company applying to one opportunity (the multi-company anchor). Seeds the company as lead; pass consortium to add partners.
upsert_sectionCreate 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_documentThe compliance join: record that a specific vault document satisfies a submission — optionally tied to the exact requirement it fulfills.
submission_checklistAssemble 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_answersThe 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.